#include "start_task.h"

TaskHandle_t startTaskHandle;

// 创建其他任务
void startTask(void * param)
{
    // 进入临界区 让task1-3等待当前函数执行完毕再进入就绪状态
    taskENTER_CRITICAL();
    // 各部分初始化
    heart_init();
    gather_init();
    execute_init();
    
    // 调用任务创建
    createHeartTask();
    createGatherTask();
    createExecuteTask();

    // 删除自己
    vTaskDelete(NULL);
    // 退出临界区
    taskEXIT_CRITICAL();
    
}
// 入口函数
void rtosStart()
{
    BaseType_t res = xTaskCreate(
        startTask,
        "startTask",
        128,
        NULL,
        2,
        &startTaskHandle
    );
    if (res == pdPASS)
    {
        printf("tasks create successfully\r\n");
        // 开启任务调度
        vTaskStartScheduler();
    }
}
